В настоящее время я использую многопроцессный python для простого параллельного программирования.
Я использую асинхронный декоратор
def async(decorated):
module = getmodule(decorated)
decorated.__name__ += '_original'
setattr(module, decorated.__name__, decorated)
def send(*args, **opts):
return async.pool.apply_async(decorated, args, opts)
return send
, а затем
@async
def evalfunc(uid, start, end):
veckernel(Posx, Posy, Posz, Quant, Delta)
return (uid, GridVal)
def runit(outdir):
async.pool = Pool(8)
results = []
for uid in range(8):
result = evalfunc(uid,Chunks[uid], Chunks[uid+1])
results.append(result)
Если я запускаю это на 8-ядерном или 8-ядерном компьютере, он, по сути, использует только два ядра. Это почему? Есть ли способ сделать правильное закрепление ядра, как с помощью pthreads?
Большое спасибо,
Mark