Что хранит GIL и как его можно освободитьPython

Программы на Python
Ответить
Anonymous
 Что хранит GIL и как его можно освободить

Сообщение Anonymous »

Код: Выделить всё

from concurrent.futures import ThreadPoolExecutor
import time
import io
import pandas as pd
from image_exporter import export
import numpy as np

df1 = pd.DataFrame(np.random.rand (6, 4))
df2 = pd.DataFrame(np.random.rand (6, 4))
df3 = pd.DataFrame(np.random.rand (6, 4))
df4 = pd.DataFrame(np.random.rand (6, 4))

def get_exported(df):
s = time.time()
buffer = io.BytesIO()
export(df.style.background_gradient(), buffer)
buffer.seek(0)
print('get_exported', time.time() - s)

def test_parallel():
tasks = [df1, df2, df3, df4]
with ThreadPoolExecutor() as executor:
executor.map(get_exported, tasks)

def test_seq():
tasks = [df1, df2, df3, df4]
for t in tasks:
get_exported(t)

s = time.time()
test_parallel()
print('Total time parallel', time.time() - s)

s = time.time()
test_seq()
print('Total time sequential', time.time() - s)

Код: Выделить всё

image_exporter
файл, содержащий метод экспорта
https://gist.github.com/vukrado/bd14192 ... bcd49f4b24
The test_seq на моем машине требуется ~0,035 секунды на вызов get_exported, общее время выполнения ~0,14. секунды
test_parallel на моей машине занимает ~0,18 секунды на вызов get_exported, общее время выполнения составляет ~0,19 секунды

Подробнее здесь: https://stackoverflow.com/questions/793 ... e-released
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»