[Python] thread strano comportamento

enrico franchi enrico.franchi a gmail.com
Lun 19 Maggio 2014 18:59:31 CEST


2014-05-16 19:06 GMT+01:00 Balan Victor <balan.victor0 a gmail.com>:


> estrarre in continuazione una lista di comandi e lanciare al massino N
> comandi alla volta. Per fare questo pensavo di usare il modulo threading e
> ho scritto un codice simile a quello che trovate a questo indirizzo:
> http://pastebin.com/YZxa3VG8
>

Cosi' a naso sembra la soluzione sbagliata ad un problema.
Tanto per dirne una, gia' andare a risolvere sti problemi con i thread si
fa fatica, poi i thread di Python fanno pure un po' cacare (GIL, yadda
yadda).
Poi se proprio uno vuole muoversi in quella direzione, c'e'
multiprocess.dummy. Questo sempre nel mondo in cui sei molto convinto in
cui i thread siano una buona soluzione e non vuoi evitarti un po' di dolore
facendo multiprocessing e basta (ma magari sei sotto windows).

Dopo di che, di questi aggeggi ce ne sono di belli e pronti, senza stare a
reinventare la ruota. Vedi Celery.




>  Se ora faccio partire il tutto mi trovo con un output simile a questo:
>
> DEBUG 4460 Consumer 2014-05-16 20:00:20,345: Get task task 32
> DEBUG 4460 Consumer 2014-05-16 20:00:20,345: Get task task 3
> DEBUG 4460 Consumer 2014-05-16 20:00:20,345: Get task task 52
> DEBUG 4460 Consumer 2014-05-16 20:00:20,345: Get task task 43
> DEBUG 4460 Consumer 2014-05-16 20:00:20,345: Get task task 27
> DEBUG 4552 task 52 2014-05-16 20:00:20,345: task 52 starting ...
>
> io dichiaro una coda di dimensione 1. Mi aspetto che quando faccio
> todoQ.put questo resti in attesa finché nella coda non si libera un posto
> invece non succede cosi. Inoltre dal log sembra che scarichi i task nel
> seguente ordine 32, 3, 52, 43, 27 e cosi via. Mi aspetto che il primo task
> sia 32, invece è 52.
>

Welcome to the magic world of threads!


> qualcuno può illuminarmi?
>

Non usare i thread. ;)
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20140519/3fe0e6cd/attachment.html>


Maggiori informazioni sulla lista Python