Sto usando Python 2.7, ho un codice che assomiglia a questo:compiti di esecuzione in parallelo in pitone
task1()
task2()
task3()
dependent1()
task4()
task5()
task6()
dependent2()
dependent3()
Le uniche dipendenze qui sono i seguenti: dependent1 deve attendere tasks1-3, dependent2 esigenze attendere le attività 4-6 e dipendente3 deve attendere le dipendenze1-2 ... Quanto segue dovrebbe essere corretto: eseguire prima tutte le 6 attività in parallelo, quindi le prime due dipendenti in parallelo .. quindi la dipendente finale
Preferisco avere quante più attività possibile in parallelo, ho cercato su google per alcuni moduli ma speravo di evitare le librerie esterne e non sono sicuro di come La tecnica ue-Thread può risolvere il mio problema (forse qualcuno può raccomandare una buona risorsa?)
Si consiglia di utilizzare i metodi * Queue.task_done * e * Queue.join * della libreria standard per sincronizzare i thread. Nella parte inferiore della pagina nei documenti della coda, troverai un esempio su come aspettare che altri thread finiscano le loro attività: http://docs.python.org/library/queue.html#Queue.Queue.join –
Se il codice diventa più complesso, vale la pena guardare le librerie esterne, perché ci sono già cose da fare con le attività in esecuzione in parallelo mentre si assicura che le dipendenze funzionino in ordine. –
A causa della GIL, i thread verranno eseguiti solo uno alla volta in Python standard. Le versioni future di Pypy che utilizzano STM potrebbero aggirare questo problema. –