[issue19224] Make hash(None) consistent among processes
Changes by Qiangning Hong hon...@gmail.com: -- keywords: +patch Added file: http://bugs.python.org/file32043/hash_of_none.patch ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue19224 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue19224] Make hash(None) consistent among processes
New submission from Qiangning Hong: Integers, strings, and bool's hash are all consistent for processes of a same interpreter. However, hash(None) differs. $ python -c print(hash(None)) 272931276 $ python -c print(hash(None)) 277161420 It's wired and make difficulty for distributed systems partitioning data according hash of keys if the system wants the keys support None. This patch makes hash(None) always return 0 to resolve that problem. And it is used in DPark(Python clone of Spark, a MapReduce alike framework in Python, https://github.com/douban/dpark) to speed up portable hash (see line https://github.com/douban/dpark/blob/65a3ba857f11285667c61e2e134dacda44c13a2c/dpark/util.py#L47). davies@gmail.com is the original author of this patch. All credit goes to him. -- messages: 199439 nosy: hongqn priority: normal severity: normal status: open title: Make hash(None) consistent among processes ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue19224 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue19224] Make hash(None) consistent among processes
Qiangning Hong added the comment: Return 1315925605 now :) -- Added file: http://bugs.python.org/file32044/hash_of_none.patch ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue19224 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue14562] urllib2 maybe blocks too long with small chunks
Changes by Qiangning Hong hon...@gmail.com: -- nosy: +hongqn ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue14562 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9205] Parent process hanging in multiprocessing if children terminate unexpectedly
Changes by Qiangning Hong hon...@gmail.com: -- nosy: +hongqn ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue9205 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue4947] sys.stdout fails to use default encoding as advertised
Changes by Qiangning Hong hon...@gmail.com: -- nosy: +hongqn ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue4947 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue1722344] Thread shutdown exception in Thread.notify()
Changes by Qiangning Hong hon...@gmail.com: -- nosy: +hongqn ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue1722344 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
Re: sys.stdout.write()'s bug or doc bug?
On Dec 27, 12:31 am, Martin mar...@marcher.name wrote: Python 2.4.4 (#2, Oct 22 2008, 19:52:44) [GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2 Type help, copyright, credits or license for more information. u = u\u554a print u 啊 sys.stdout.write(u + \n) Traceback (most recent call last): File stdin, line 1, in ? UnicodeEncodeError: 'ascii' codec can't encode character u'\u554a' in position 0: ordinal not in range(128) # you are trying to write unicode, you need to encode it to something that suits your needs sys.stdout.write(u.encode(UTF-8) + \n) 啊 # now go and write a hundred times Unicode is not an encoding :) Actually, I know relationship between unicode and str objects very well. That's why I only quoted the unicode-related part of file.encoding's documentation in my original post. Thank you. So, my question is, as sys.stdout IS a file object, why it does not use its encoding attribute to convert the given unicode? An implementation bug? A documenation bug? hmm I always thought sys.stdout is a file-like object not that it IS a file. In my original post, I have figured out that sys.stdout IS a file, by using type() function. And isinstance() function tells the same: Python 2.5.2 (r252:60911, Dec 18 2008, 12:39:19) [GCC 4.2.1 (Apple Inc. build 5564)] on darwin Type help, copyright, credits or license for more information. import sys type(sys.stdout) is file True isinstance(sys.stdout, file) True So, sys.stdout SHOULD do what the doc says, otherwise there is a bug either in implementation of sys.stdout, or in the documentation of file. -- http://mail.python.org/mailman/listinfo/python-list
sys.stdout.write()'s bug or doc bug?
u = u'\u554a' print u 啊 sys.stdout.write(u) Traceback (most recent call last): File stdin, line 1, in module UnicodeEncodeError: 'ascii' codec can't encode character u'\u554a' in position 0: ordinal not in range(128) type(sys.stdout) type 'file' sys.stdout.encoding 'UTF-8' Quote from file object's documentation: encoding The encoding that this file uses. When Unicode strings are written to a file, they will be converted to byte strings using this encoding. . So, my question is, as sys.stdout IS a file object, why it does not use its encoding attribute to convert the given unicode? An implementation bug? A documenation bug? -- http://mail.python.org/mailman/listinfo/python-list
[issue2277] MozillaCookieJar does not support Firefox3 cookie files
Changes by Qiangning Hong [EMAIL PROTECTED]: -- nosy: +hongqn ___ Python tracker [EMAIL PROTECTED] http://bugs.python.org/issue2277 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
Re: Prevent self being passed to a function stored as a member variable?
On 4 Sep 2006 09:39:32 -0700, Sandra-24 [EMAIL PROTECTED] wrote: How can you prevent self from being passed to a function stored as a member variable? class Foo(object): def __init__(self, callback): self.func = callback f =Foo(lambda x: x) f.func(1) # TypeError, func expects 1 argument, recieved 2 Do you really get that error? I got the following in my python shell: . class Foo(object): def __init__(self, callback): self.func = callback . f = Foo(lambda x: x) . f.func(1) 1 -- http://mail.python.org/mailman/listinfo/python-list
Re: Is this a good idea or a waste of time?
On 24 Aug 2006 20:53:49 -0700, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote: That's bad form. If you insist on doing something like this, at least use isinstance(a, str) instead of typeof. But even that breaks duck typing; if a is a unicode string, that'll fail when the function may work fine for unicode strings. To check both str and unicode, you could use isinstance(a, basestring). -- http://mail.python.org/mailman/listinfo/python-list
splitting words with brackets
I've got some strings to split. They are main words, but some words are inside a pair of brackets and should be considered as one unit. I prefer to use re.split, but haven't written a working one after hours of work. Example: a (b c) d [e f g] h i should be splitted to [a, (b c), d, [e f g], h, i] As speed is a factor to consider, it's best if there is a single line regular expression can handle this. I tried this but failed: re.split(r(?![\(\[].*?)\s+(?!.*?[\)\]]), s). It work for (a b) c but not work a (b c) :( Any hint? -- http://mail.python.org/mailman/listinfo/python-list
Re: splitting words with brackets
faulkner wrote: re.findall('\([^\)]*\)|\[[^\]]*|\S+', s) sorry i forgot to give a limitation: if a letter is next to a bracket, they should be considered as one word. i.e.: a(b c) d becomes [a(b c), d] because there is no blank between a and (. -- http://mail.python.org/mailman/listinfo/python-list
Re: splitting words with brackets
Tim Chase wrote: import re s ='a (b c) d [e f g] h ia abcd(b c)xyz d [e f g] h i' r = re.compile(r'(?:\S*(?:\([^\)]*\)|\[[^\]]*\])\S*)|\S+') r.findall(s) ['a', '(b c)', 'd', '[e f g]', 'h', 'ia', 'abcd(b c)xyz', 'd', '[e f g]', 'h', 'i'] [...] However, the above monstrosity passes the tests I threw at it. but it can't pass this one: (a c)b(c d) e the above regex gives out ['(a c)b(c', 'd)', 'e'], but the correct one should be ['(a c)b(c d)', 'e'] -- http://mail.python.org/mailman/listinfo/python-list
Re: splitting words with brackets
Simon Forman wrote: def splitup(s): return re.findall(''' \S*\( [^\)]* \)\S* | \S*\[ [^\]]* \]\S* | \S+ ''', s, re.VERBOSE) Yours is the same as Tim's, it can't handle a word with two or more brackets pairs, too. I tried to change the \S*\([^\)]*\)\S* part to (\S|\([^\)]*\))*, but it turns out to a mess. -- http://mail.python.org/mailman/listinfo/python-list
Re: splitting words with brackets
Simon Forman wrote: What are the desired results in cases like this: (a b)[c d] or (a b)(c d) ? [(a b)[c d]], [(a b)(c d)] -- http://mail.python.org/mailman/listinfo/python-list
Re: splitting words with brackets
Tim Chase wrote: Ah...the picture is becoming a little more clear: r = re.compile(r'(?:\([^\)]*\)|\[[^\]]*\]|\S)+') r.findall(s) ['(a c)b(c d)', 'e'] It also works on my original test data, and is a cleaner regexp than the original. The clearer the problem, the clearer the answer. :) Ah, it's exactly what I want! I thought the left and right sides of | are equal, but it is not true. I think I must sleep right now, lacking of sleep makes me a dull :-p. Thank you and Simon for your kindly help! -- http://mail.python.org/mailman/listinfo/python-list
Re: hash() yields different results for different platforms
Grant Edwards wrote: On 2006-07-11, Qiangning Hong [EMAIL PROTECTED] wrote: However, when I come to Python's builtin hash() function, I found it produces different values in my two computers! In a pentium4, hash('a') - -468864544; in a amd64, hash('a') - 12416037344. Does hash function depend on machine's word length? Apparently. :) The low 32 bits match, so perhaps you should just use that portion of the returned hash? hex(12416037344) '0x2E40DB1E0L' hex(-468864544 0x) '0xE40DB1E0L' hex(12416037344 0x) '0xE40DB1E0L' hex(-468864544 0x) '0xE40DB1E0L' Is this relationship (same low 32 bits) guaranteed? Will it change in the future version? -- http://mail.python.org/mailman/listinfo/python-list
hash() yields different results for different platforms
I'm writing a spider. I have millions of urls in a table (mysql) to check if a url has already been fetched. To check fast, I am considering to add a hash column in the table, make it a unique key, and use the following sql statement: insert ignore into urls (url, hash) values (newurl, hash_of_newurl) to add new url. I believe this will be faster than making the url column unique key and doing string comparation. Right? However, when I come to Python's builtin hash() function, I found it produces different values in my two computers! In a pentium4, hash('a') - -468864544; in a amd64, hash('a') - 12416037344. Does hash function depend on machine's word length? If it does, I must consider another hash algorithm because the spider will run concurrently in several computers, some are 32-bit, some are 64-bit. Is md5 a good choice? Will it be too slow that I have no performance gain than using the url column directly as the unique key? I will do some benchmarking to find it out. But while making my hands dirty, I would like to hear some advice from experts here. :) -- http://mail.python.org/mailman/listinfo/python-list
Re: need help with my append syntax
yaffa wrote: dear folks, i'm trying to append a semicolon to my addr string and am using the syntax below. for some reason the added on of the ; doesn't work. when i print it out later on it only shows the original value of addr. addr = incident.findNextSibling('td') addr.append('%s;') Is addr is really a string? AFAIK, strings havn't an append methond. use += to extend strings: . addr = 'abc' . addr += '%s;' . addr 'abc%s;' -- Qiangning Hong I'm usually annoyed by IDEs because, for instance, they don't use VIM as an editor. Since I'm hooked to that, all IDEs I've used so far have failed to impress me. -- Sybren Stuvel @ c.l.python Get Firefox! http://www.spreadfirefox.com/?q=affiliatesamp;id=67907amp;t=1 -- http://mail.python.org/mailman/listinfo/python-list
what's wrong with my code using subprocess?
I decide to seperate my data collection routine from my data analysis and storage program to a seperate process, so I try to use the new subprocess model in Python 2.4. The main program spawns the subprocess and receives data from the pipe. When some event occurs (e.g. the user clicks the 'Stop' button on GUI), the main program will send the subprocess a command to change its behavior or ask it to exit. However, my code (attached below) doesn't work. Under Linux, the output is: output waiting subprocess exit Traceback (most recent call last): File receiver.py, line 19, in ? main() File receiver.py, line 13, in main print p.stdin, 'exit' IOError: [Errno 32] Broken pipe /output And Under Windows XP, p.wait() never returns: output waiting subprocess exit [hanging here] /output What's wrong? # collector.py import threading class Main(object): def __init__(self): self.keep_going = True self.t = threading.Thread(target=self.work) self.t.start() cmd = raw_input() while cmd != 'exit': cmd = raw_input() self.keep_going = False self.t.join() def work(self): while self.keep_going: print '$' * 82 if __name__ == '__main__': Main() # receiver.py (the main program) from subprocess import Popen, PIPE def main(): p = Popen(['python', 'collector.py'], stdout=PIPE, stdin=PIPE) count = 0 for line in p.stdout: data = line.strip() # process(data) count += 1 if count = 1000: print p.stdin, 'exit' print 'waiting subprocess exit' p.wait() if __name__ == '__main__': main() -- Qiangning Hong I'm usually annoyed by IDEs because, for instance, they don't use VIM as an editor. Since I'm hooked to that, all IDEs I've used so far have failed to impress me. -- Sybren Stuvel @ c.l.python Get Firefox! http://www.spreadfirefox.com/?q=affiliatesamp;id=67907amp;t=1 -- http://mail.python.org/mailman/listinfo/python-list
Re: tuple to string?
On 7/22/05, Francois De Serres [EMAIL PROTECTED] wrote: what's the clean way to translate the tuple (0x73, 0x70, 0x61, 0x6D) to the string 'spam'? Use ''.join and chr() as others have pointed out. Here are just-for-fun versions ;) . t = (0x73, 0x70, 0x61, 0x6D) (use string formatter): . '%c%c%c%c' % t 'spam' (use struct model): . import struct . struct.pack('', *t) 'spam' -- Qiangning Hong I'm usually annoyed by IDEs because, for instance, they don't use VIM as an editor. Since I'm hooked to that, all IDEs I've used so far have failed to impress me. -- Sybren Stuvel @ c.l.python Get Firefox! http://www.spreadfirefox.com/?q=affiliatesamp;id=67907amp;t=1 -- http://mail.python.org/mailman/listinfo/python-list
Re: tuple to string?
Francois De Serres wrote: hiho, what's the clean way to translate the tuple (0x73, 0x70, 0x61, 0x6D) to the string 'spam'? Use ''.join and chr() as others have pointed out. Here are just-for-fun versions ;) . t = (0x73, 0x70, 0x61, 0x6D) (use string formatter): . '%c%c%c%c' % t 'spam' (use struct model): . import struct . struct.pack('', *t) 'spam' -- Qiangning Hong I'm usually annoyed by IDEs because, for instance, they don't use VIM as an editor. Since I'm hooked to that, all IDEs I've used so far have failed to impress me. -- Sybren Stuvel @ c.l.python Get Firefox! http://www.spreadfirefox.com/?q=affiliatesamp;id=67907amp;t=1 -- http://mail.python.org/mailman/listinfo/python-list
Re: PyArg_ParseTuple help
[EMAIL PROTECTED] wrote: hello all, how to parse the arguments of a c function with PyArg_ParseTuple? The prototype of the c function is : int func(unsigned char * in , int inlen, unsigned char * v, unsigned char * out, int * outlen); The problem is , when the func returns, there will be results in out and outlen. Is the following format is correct? As the ``out'' and ``outlen'' are used for output, you should not pass them to a python function as parameters. Instead, you'd better make the return value of the python function to represent them (if the python caller wants them, of course). In your case, returning a python string object will be a good choice if outlen is the length of out array, since a python string knows its length. So, you need only parse the parameters of ``in'', ``inlen'' and ``v'' in the wrap function. And even further, the python caller can pass a python string to replace ``in'' and ``inlen''. Then, the prototype of the function is something like: def func(ins, v) which returns a string. [...] -- Qiangning Hong -- http://mail.python.org/mailman/listinfo/python-list
Re: Create datetime instance using a tuple.
On 6 Jul 2005 02:01:55 -0700, Negroup [EMAIL PROTECTED] wrote: Hi, all. I would like to know if it is possible to create a datetime instance using a tuple instead of single values. I mean: from datetime import datetime t = (1, 2, 3) dt = datetime(t) Traceback (most recent call last): File stdin, line 1, in ? TypeError: function takes at least 3 arguments (1 given) (class datetime(year, month, day[, hour[, minute[, second[, microsecond[, tzinfo]) Use: dt = datetime(*t) -- Qiangning Hong Get Firefox! http://www.spreadfirefox.com/?q=affiliatesamp;id=67907amp;t=1 -- http://mail.python.org/mailman/listinfo/python-list
Re: frozenset question
On 7/6/05, Will McGugan [EMAIL PROTECTED] wrote: Hi, Are there any benefits in using a frozenset over a set, other than it being immutable? A frozenset can be used as a key of a dict: . s1 = set([1]) . s2 = frozenset([2]) . {s1: 1} Traceback (most recent call last): File stdin, line 1, in ? TypeError: set objects are unhashable . {s2:1} {frozenset([2]): 1} -- Qiangning Hong Get Firefox! http://www.spreadfirefox.com/?q=affiliatesamp;id=67907amp;t=1 -- http://mail.python.org/mailman/listinfo/python-list
debugger?
I have read a lot of posts discussing python IDEs, but most of them focus on the editor, GUI builder, project management, customizability, etc Some talked about debugging capability, but only on an available/unavailable level. I use vim to edit my code, wxGlade to build the GUI or hand-code it, and I still prefer that. So, until now, I haven't tried many IDEs. However, while I use pdb or inserting print statement to debug my apps, sometimes it is a pain. I think I need a good GUI debugger to help me. The debugger should meet _most_ of the following requirements: 1. can debug wxPython applications (and other GUI lib). 2. an intuitive way to set/clear/enable/disable breakpoints. 3. can set conditional breakpoints (i.e. break when some condition satisfied). 4. variable watch list, namescope watching (local, global) 5. evaluate expression, change variable values, etc within debugging. 6. change the running routine, (i.e. go directly to a statement, skip some statements, etc) 7. clever way to express objects, not just a string returned by repr() 8. perform profiling 9. a clear interface. 10. cross-platform. 11. free, or better, open source. What debugger will you suggest? Or what more polish feature you want to see in an ideal python debugger? -- hope this thread will help IDE developers to fill their todo list with some shining ideas :) -- Qiangning Hong Get Firefox! http://www.spreadfirefox.com/?q=affiliatesamp;id=67907amp;t=1 -- http://mail.python.org/mailman/listinfo/python-list
Re: debugger?
Detlev Offenbach wrote: Qiangning Hong wrote: I have read a lot of posts discussing python IDEs, but most of them focus on the editor, GUI builder, project management, customizability, etc Some talked about debugging capability, but only on an available/unavailable level. I use vim to edit my code, wxGlade to build the GUI or hand-code it, and I still prefer that. So, until now, I haven't tried many IDEs. However, while I use pdb or inserting print statement to debug my apps, sometimes it is a pain. I think I need a good GUI debugger to help me. The debugger should meet _most_ of the following requirements: 1. can debug wxPython applications (and other GUI lib). 2. an intuitive way to set/clear/enable/disable breakpoints. 3. can set conditional breakpoints (i.e. break when some condition satisfied). 4. variable watch list, namescope watching (local, global) 5. evaluate expression, change variable values, etc within debugging. 6. change the running routine, (i.e. go directly to a statement, skip some statements, etc) 7. clever way to express objects, not just a string returned by repr() 8. perform profiling 9. a clear interface. 10. cross-platform. 11. free, or better, open source. What debugger will you suggest? Or what more polish feature you want to see in an ideal python debugger? -- hope this thread will help IDE developers to fill their todo list with some shining ideas :) Eric3 should be compliant with your list. Try it at http://www.die-offenbachs.de/detlev/eric3.html Regards, Detlev Eric3 need pyqt so it is not free under windows platform. -- Qiangning Hong _ / Humanity has advanced, when it has advanced, not because it \ | has been sober, responsible, and cautious, but because it | | has been playful, rebellious, and immature. | | | \ -- Tom Robbins / - \ ,, \ /()` \ \ \___ / | /- _ `-/ ' (/\/ \ \ /\ / / | `\ O O ) /| `-^--'` ' (_.) _ ) / `.___/`/ `-' / . __ / __ \ |O)))==) \) / '`--' `.__,' \ || \ / __( (_ / \__ ,' ,-' |\ `--{__)\/ -- http://mail.python.org/mailman/listinfo/python-list
how to shrink a numarray array?
To draw a large array of data on a small panel, I need to shrink it to a given size. e.g: To draw numarray.arange(1) on a panel of width of 100, I only need to draw the points of (0, 100, 200, 300, ...) instead of (0, 1, 2, ...). So I need a method to shrink it to an 100-item array. x[::len(x)/panel_width] will not work. If the panel's width is 60, that expression will return an array of 61 elements. I believe there is an existing function in numarray to do this, however English is not my mother tongue and math is not my speciality, I can't find it in the document full of math terms... -- Qiangning Hong __ ( Michael:) ( ) ( Hi. I'm Michael Jackson, from The Jacksons. ) ( ) ( Homer: I'm Homer Simpson, from the Simpsons. ) ( ) ( Stark Raving Dad ) -- o o \ \ /\ ( ) .( o ). -- http://mail.python.org/mailman/listinfo/python-list
Re: Can we pass some arguments to system(cmdline)?
Didier C wrote: Hi! I was wondering if we can pass some arguments to system(cmdline)? E.g in Perl, we can do something like: $dir=/home/cypher; system(ls $dir); which would instruct Perl to do an ls /home/cypher But in python, doing something like dir=/home/cypher system(ls dir) would cause python to execute ls dir where dir might not exist at all! Is there a way to reproduce the same thing in Python? Thanks for any insights. cheers, Didier. You should use something like this: dir = /home/cypher system(ls %s % dir) -- Qiangning Hong ___ / lp1 on fire \ | | \ -- One of the more obfuscated kernel messages / --- \ \ \ ___ _ ___ / \ //| / \ | | // | | | | | // | | | | | || | | | | | | {} | / | | | | ||/| | | ||==| | | | \___/ | | | | | -- http://mail.python.org/mailman/listinfo/python-list
collect data using threads
A class Collector, it spawns several threads to read from serial port. Collector.get_data() will get all the data they have read since last call. Who can tell me whether my implementation correct? class Collector(object): def __init__(self): self.data = [] spawn_work_bees(callback=self.on_received) def on_received(self, a_piece_of_data): This callback is executed in work bee threads! self.data.append(a_piece_of_data) def get_data(self): x = self.data self.data = [] return x I am not very sure about the get_data() method. Will it cause data lose if there is a thread is appending data to self.data at the same time? Is there a more pythonic/standard recipe to collect thread data? -- Qiangning Hong ___ Those who can, do; those who can't, simulate. --- \ ___---___ \ _-~~ ~~-_ \ _-~/~-_ /^\__/^\ /~ \ /\ /| O|| O|/ \___/\ | |___||__| / /\ \ | \/ /\ \ | (___) /__/\_ \ | / / \ /\ \ \^\\ \ / \ / \ || \__/ _-_ //\__// \ ||--_-~~-_ - \ --/~ ~\|| __/ ~-||/~ |==| |/~ (_(__/ ./ /\_\ \. (_(___/ \_)_) -- http://mail.python.org/mailman/listinfo/python-list
Re: collect data using threads
James Tanis wrote: #A class Collector, it spawns several threads to read from serial port. #Collector.get_data() will get all the data they have read since last #call. Who can tell me whether my implementation correct? # # Here's the original code: # # class Collector(object): #def __init__(self): #self.data = [] #spawn_work_bees(callback=self.on_received) # #def on_received(self, a_piece_of_data): #This callback is executed in work bee threads! #self.data.append(a_piece_of_data) # #def get_data(self): #x = self.data #self.data = [] #return x # I may be wrong here, but shouldn't you just use a stack, or in other words, use the list as a stack and just pop the data off the top. I believe there is a method pop() already supplied for you. Since you wouldn't require an self.data = [] this should allow you to safely remove the data you've already seen without accidentally removing data that may have been added in the mean time. I am the original poster. I actually had considered Queue and pop() before I wrote the above code. However, because there is a lot of data to get every time I call get_data(), I want a more CPU friendly way to avoid the while-loop and empty checking, and then the above code comes out. But I am not very sure whether it will cause serious problem or not, so I ask here. If anyone can prove it is correct, I'll use it in my program, else I'll go back to the Queue solution. To Jeremy Jones: I am very sorry to take you too much effort on this weird code. I should make it clear that there is only *one* thread (the main thread in my application) calls the get_data() method, periodically, driven by a timer. And for on_received(), there may be up to 16 threads accessing it simultaneously. -- Qiangning Hong ___ / BOFH Excuse #208: \ | | | Your mail is being routed through Germany ... and they're | \ censoring us. / --- \ ._ . \|\_|/__/| / / \/ \ \ /__|O||O|__ \ |/_ \_/\_/ _\ | | | () | || \/\___/\__/ // (_/ || | || | ||\ \//_/ \__// __ || __|| (() -- http://mail.python.org/mailman/listinfo/python-list
Re: Show current ip on Linux
David Van Mosselbeen wrote: Hi, Im a newbie in Python, and also in Fedora Core 3. (Yes, Linux is fine man :-) My question is : How can i rwite a script that show my current ip. If i have more than one network card, the script must then show all used ip. It's important that this will work on a linux. i Have rwite some piece of code that realy work under Windows XP, but the same script wil not work on Linux. Verry thanks to all vulunteers. How about use the shell command ifconfig | grep inet ? -- Qiangning Hong _ ( zhen so zhen when I do a chroot /path /bin/bash, i can ) ( see the processes ) ( ) ( outside of the chroot zhen and i can kill those processes ) ( * klieber claps for zhen zhen oh go die ) - o \___ v__v o \ O ) (OO) ||w | (__) || || \/\ -- http://mail.python.org/mailman/listinfo/python-list
Re: compare two voices
Jeremy Bowers wrote: No matter how you slice it, this is not a Python problem, this is an intense voice recognition algorithm problem that would make a good PhD thesis. No, my goal is nothing relative to voice recognition. Sorry that I haven't described my question clearly. We are not teaching English, so the voice recognition isn't helpful here. I just want to compare two sound WAVE file, not what the students or the teacher really saying. For example, if the teacher recorded his standard pronouncation of god, then the student saying good will get a higher score than the student saying evil because good sounds more like god. Yes, this not a Python problem, but I am a fan of Python and using Python to develop the other parts of the application (UI, sound play and record, grammer training, etc), so I ask here for available python module, and of cause, for any kindly suggestions unrelative to Python itself (like yours) too. I myself have tried using Python's standard audioop module, using the findfactor and rms functions. I try to use the value returned from rms(add(a, mul(b, -findfactor(a, b as the score. But the result is not good. So I want to know if there is a human-voice optimized algorithm/library out there. -- http://mail.python.org/mailman/listinfo/python-list
compare two voices
I want to make an app to help students study foreign language. I want the following function in it: The student reads a piece of text to the microphone. The software records it and compares it to the wave-file pre-recorded by the teacher, and gives out a score to indicate the similarity between them. This function will help the students pronounce properly, I think. Is there an existing library (C or Python) to do this? Or if someone can guide me to a ready-to-implement algorithm? -- http://mail.python.org/mailman/listinfo/python-list
distutils question: different projects under same namespace
To avoid namespace confliction with other Python packages, I want all my projects to be put into a specific namespace, e.g. 'hongqn' package, so that I can use from hongqn.proj1 import module1, from hongqn.proj2.subpack1 import module2, etc. These projects are developed and maintained and distributed seperately, so I should not make a whole 'hongqn' package with one setup.py. I must write setup.py scripts for each project. I meet a problem here. For instance, I am writing setup.py script for proj1. I use the following parameters when calling distutils.core.setup: setup( ... package_dir = {'hongqn.proj1': 'proj1'}, packages = ['hongqn.proj1'], ... ) python setup.py install will create /usr/lib/python2.3/hongqn/proj1 directory and copy proj1/*.py there. But this is UNUSABLE! There is NO __init__.py file under /usr/lib/python2.3/hongqn/ so that import hongqn.proj1 will fail! I am considering manually create this __init__.py by hacking the install_lib command. But before making my hands dirty, I want to know if there is an official solution exists or others have already success stories on this matter. As a note, I wish the solution can handle setup.py bdist and bdist_wininst well. -- http://mail.python.org/mailman/listinfo/python-list
distutils question: different projects under same namespace
To avoid namespace confliction with other Python packages, I want all my projects to be put into a specific namespace, e.g. 'hongqn' package, so that I can use from hongqn.proj1 import module1, from hongqn.proj2.subpack1 import module2, etc. These projects are developed and maintained and distributed seperately, so I should not make a whole 'hongqn' package with one setup.py. I must write setup.py scripts for each project. I meet a problem here. For instance, I am writing setup.py script for proj1. I use the following parameters when calling distutils.core.setup: setup( ... package_dir = {'hongqn.proj1': 'proj1'}, packages = ['hongqn.proj1'], ... ) python setup.py install will create /usr/lib/python2.3/hongqn/proj1 directory and copy proj1/*.py there. But this is UNUSABLE! There is NO __init__.py file under /usr/lib/python2.3/hongqn/ so that import hongqn.proj1 will fail! I am considering manually create this __init__.py by hacking the install_lib command. But before making my hands dirty, I want to know if there is an official solution exists or others have already success stories on this matter. As a note, I wish the solution can handle setup.py bdist and bdist_wininst well. -- Qiangning HongGet Firefox! http://www.spreadfirefox.com/?q=affiliatesamp;id=67907amp;t=1-- http://mail.python.org/mailman/listinfo/python-list
distutils: package data
I am writing a setup.py for my package. I have a pre-compiled myextmod.pyd file in my package and I want the distutils to automatically copy it to C:\Python23\Lib\site-packages\mypackage\myextmod.pyd. I try to add the following parameter to setup(): data_file = [('mypackage', ['mypackage/myextmod.pyd'])], but it installs the pyd file to C:\Python23\mypackage\myextmod.pyd, this is not what I want. And I don't want to specify the path in data_file to the absolution path 'C:\Python23\Lib\site-packages\mypackage', for portability, of course. Any hints? -- http://mail.python.org/mailman/listinfo/python-list
unittest help
I want to apply TDD (test driven development) on my project. I am working on a class like this (in plan): # file: myclass.py import _extmod class MyClass(object): def __init__(self): self.handle = _extmod.open() def __del__(self): _extmod.close(self.handle) def some_stuff(self): _extmod.foobar(self.handle) ... As you see, it is an OO wrapper on _extmod, which is a pyrex extension module. The question is: how to unittest this class? As the _extmod is hardware-dependent, I want to use a mock class to replace it in unit test. But how can I let myclass in unittest to import the mock class? Like the following: class MyClassTest(unittest.TestCase): def setUp(self): import myclass import mocklib myclass.change_extmod(mocklib.MockExtMod()) self.testobj = myclass.MyClass() # here MyClass.__init__ will call the open # method of MockExtMod class instead of # _extmod.open() ... How to implement the change_extmod? (Or maybe my idea is totally wrong?) -- http://mail.python.org/mailman/listinfo/python-list
how to absolute import?
From Guido's PEP8: - Relative imports for intra-package imports are highly discouraged. Always use the absolute package path for all imports. Does it mean I should put my develop directory into PYTHONPATH (e.g. /home/hongqn/devel/python) and use import myproj1.package1.module1 as module1 all the way? Or should I make a ./setup.py install for every package whenever I made a change? I'm using python 2.3 so from .foo import bar doesn't work for me. -- http://mail.python.org/mailman/listinfo/python-list
predict directory write permission under windows?
I want to know if I can write files into a directory before I actually perferm the write behavor. I found os.access(path, os.W_OK) but it uses real uid/gid to check instead of euid/egid so it doesn't fit my problem. I don't know how to get euid/egid under windows so I cannot use the mode infomation returned by os.stat(). Anybody give me a hint? -- http://mail.python.org/mailman/listinfo/python-list
notification for cd insertion
I want one of my function to execute when a cdrom is inserted. How can I achieve that? Further more, I want to do different things depend on the inserted disc type: if it is a normal cd-rom, read from it; if it is a recordable cd, write data on it. So, how can I get the inserted disc type infomation in Python code? thanks in advance. -- http://mail.python.org/mailman/listinfo/python-list