[Python] thread strano comportamento

Marco De Paoli depaolim a gmail.com
Dom 18 Maggio 2014 07:14:03 CEST


Il 16 maggio 2014 20:06, Balan Victor <balan.victor0 a gmail.com> ha scritto:
> Ho necessità di fare quando segue:
>
> 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

premetto che gli ho dato solo un occhiata e comunque mi manca un po' contesto
(per dirne una, non so a cosa serve il semaphore...)

>
> 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.

come lo verifichi che non succede così?
voglio dire:
potrebbe essere che i fetch avvengano in rapida successione per cui
effettivamente in ogni momento la coda è (effettivamente) lunga al più
1?

> 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.

uhm, chi è precisamente che stampa quelle righe di log?
potrebbe essere che il log non è nello stesso ordine del fetch?

ciao,
Marco


Maggiori informazioni sulla lista Python