Lists: | pgsql-sql |
---|
From: | Gerardo Herzig <gherzig(at)fmed(dot)uba(dot)ar> |
---|---|
To: | python-list(at)python(dot)org, pgsql-sql(at)postgresql(dot)org |
Subject: | plpythonu and "hello concurrent world" |
Date: | 2007-12-05 13:10:02 |
Message-ID: | 4756A32A.9020101@fmed.uba.ar |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-sql |
Hi all. Im having some "problems" with a small concurrent plpython function.
Based on a small example [1] about concurrent programming, there is some
code which works fine under python:
#! /usr/bin/python
import threading, random
import time
def myPrint(str):
print 'searching...', str
time.sleep(random.randint(10, 10000) / 1000.0)
print str, 'OK!'
myThreads = (threading.Timer(random.random(), myPrint, ["hello"]), \
threading.Timer(random.random(), myPrint, ["concurrent"]), \
threading.Timer(random.random(), myPrint, ["world"]))
for thr in myThreads:
thr.start()
gherzig(at)linux: python pp.py
searching... concurrent
searching... world
searching... hello
hello OK!
concurrent OK!
world OK!
So far, so good. Almost the same example in plpythonu:
CREATE OR REPLACE FUNCTION search_t()
returns bigint
security definer
as
$$
import threading, random
import time
def myPrint(str):
plpy.notice ('searching...', str)
time.sleep(random.randint(10, 10000) / 1000.0)
plpy.notice(str, 'OK!')
myThreads = (threading.Timer(random.random(), myPrint, ["hello"]), \
threading.Timer(random.random(), myPrint, ["concurrent"]), \
threading.Timer(random.random(), myPrint, ["world"]))
for thr in myThreads:
thr.start()
return 10000
$$ language plpythonu;
gse_new_version=# select * From search_t();
search_t
----------
10000
(1 row)
Looks like myPrint() is not executing at all!!
Have no idea why, so i decided writing both on python and postgres
forums. Any ideas??
Postgres 8.1.3
python 2.5.1
Thanks!!
Gerardo
From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Gerardo Herzig <gherzig(at)fmed(dot)uba(dot)ar> |
Cc: | python-list(at)python(dot)org, pgsql-sql(at)postgresql(dot)org |
Subject: | Re: plpythonu and "hello concurrent world" |
Date: | 2007-12-05 14:42:04 |
Message-ID: | 21003.1196865724@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-sql |
Gerardo Herzig <gherzig(at)fmed(dot)uba(dot)ar> writes:
> Hi all. Im having some "problems" with a small concurrent plpython function.
Don't even *think* about starting multiple threads inside the Postgres
backend. It's an excellent way to break things.
regards, tom lane
From: | Gerardo Herzig <gherzig(at)fmed(dot)uba(dot)ar> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | pgsql-sql(at)postgresql(dot)org |
Subject: | Re: plpythonu and "hello concurrent world" |
Date: | 2007-12-05 15:19:42 |
Message-ID: | 4756C18E.2030608@fmed.uba.ar |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-sql |
Tom Lane wrote:
>Gerardo Herzig <gherzig(at)fmed(dot)uba(dot)ar> writes:
>
>
>>Hi all. Im having some "problems" with a small concurrent plpython function.
>>
>>
>
>Don't even *think* about starting multiple threads inside the Postgres
>backend. It's an excellent way to break things.
>
> regards, tom lane
>
>---------------------------(end of broadcast)---------------------------
>TIP 6: explain analyze is your friend
>
>
>
>
Damn!! Well, comming from you Tom, i guess i will just look for another
approach without complaining ^^.
Thanks!
Gerardo