[PATCH 5/n] pwclient: allow multiple IDs
Bernhard Reutner-Fischer
rep.dot.nop at gmail.com
Mon Sep 8 20:14:48 EST 2014
[Please keep me in CC..]
On Fri, Aug 29, 2014 at 03:11:34PM +0000, Keller, Jacob E wrote:
>On Fri, 2014-08-29 at 11:07 +0200, Bernhard Reutner-Fischer wrote:
>> @@ -623,28 +630,29 @@ def main():
>> action_states(rpc)
>>
>> elif action == 'view':
>> - s = rpc.patch_get_mbox(patch_id)
>> - if len(s) > 0:
>> - print unicode(s).encode("utf-8")
>> + for patch_id in patch_ids:
>> + s = rpc.patch_get_mbox(patch_id)
>> + if len(s) > 0:
>> + print unicode(s).encode("utf-8")
>>
>> elif action in ('get', 'save', 'info'):
>> if action == 'info':
>> - action_info(rpc, patch_id)
>> + [action_info(rpc, patch_id) for patch_id in patch_ids]
>> else:
>> - action_get(rpc, patch_id)
>> + [action_get(rpc, patch_id) for patch_id in patch_ids]
>>
>> elif action == 'apply':
>> - action_apply(rpc, patch_id)
>> + [action_apply(rpc, patch_id) for patch_id in patch_ids]
>>
>> elif action == 'git-am':
>> cmd = ['git', 'am']
>> if do_signoff:
>> cmd.append('-s')
>> - action_apply(rpc, patch_id, cmd)
>> + [action_apply(rpc, patch_id, cmd) for patch_id in patch_ids]
>>
>> elif action == 'update':
>> - action_update_patch(rpc, patch_id, state = state_str,
>> - commit = commit_str)
>> + [action_update_patch(rpc, patch_id, state = state_str,
>> + commit = commit_str) for patch_id in patch_ids]
>>
>
>Since you aren't saving the array that you generate here, wouldn't it
>make more sense to just do:
>
>for patch_id in patch_ids:
> action_update_patch(rpc, patch_id, state = state_str,
> commit = commit_str )
>
>
>?
That's a style question i assume. I don't mind either way, please
follow-up if you prefer the for-loop variant.
>
>I don't see why you bother to actually create the array, (obviously you
>can't just use a generator expression since that won't be evaluated. I
>don't think you need to worry about catching the whole array here either
>if I understand correctly.
>
>I am not sure if Python will be smart enough to avoid creating the array
>in this case, though it probably doesn't really hurt anything...
One could argue that if python really builds a list then python should
be fixed ;)
But let's not speculate but simply see what it makes out of what i hastily
scribbled above:
$ cat sample.py
import dis
def consume(patch_id):
"""consume the arg, return nothing"""
def arr(patch_ids):
[consume(patch_id) for patch_id in patch_ids]
def loop(patch_ids):
for patch_id in patch_ids:
consume(patch_id)
print("\n# arr")
dis.dis(arr)
print("\n# loop")
dis.dis(loop)
$ python2.7 ./sample.py
# arr
7 0 BUILD_LIST 0
3 LOAD_FAST 0 (patch_ids)
6 GET_ITER
>> 7 FOR_ITER 18 (to 28)
10 STORE_FAST 1 (patch_id)
13 LOAD_GLOBAL 0 (consume)
16 LOAD_FAST 1 (patch_id)
19 CALL_FUNCTION 1
22 LIST_APPEND 2
25 JUMP_ABSOLUTE 7
>> 28 POP_TOP
29 LOAD_CONST 0 (None)
32 RETURN_VALUE
# loop
9 0 SETUP_LOOP 24 (to 27)
3 LOAD_FAST 0 (patch_ids)
6 GET_ITER
>> 7 FOR_ITER 16 (to 26)
10 STORE_FAST 1 (patch_id)
10 13 LOAD_GLOBAL 0 (consume)
16 LOAD_FAST 1 (patch_id)
19 CALL_FUNCTION 1
22 POP_TOP
23 JUMP_ABSOLUTE 7
>> 26 POP_BLOCK
>> 27 LOAD_CONST 0 (None)
30 RETURN_VALUE
$ python3.4 ./sample.py
# arr
7 0 LOAD_CONST 1 (<code object <listcomp> at 0x7f4d1df55030, file "./sample.py", line 7>)
3 LOAD_CONST 2 ('arr.<locals>.<listcomp>')
6 MAKE_FUNCTION 0
9 LOAD_FAST 0 (patch_ids)
12 GET_ITER
13 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
16 POP_TOP
17 LOAD_CONST 0 (None)
20 RETURN_VALUE
# loop
9 0 SETUP_LOOP 24 (to 27)
3 LOAD_FAST 0 (patch_ids)
6 GET_ITER
>> 7 FOR_ITER 16 (to 26)
10 STORE_FAST 1 (patch_id)
10 13 LOAD_GLOBAL 0 (consume)
16 LOAD_FAST 1 (patch_id)
19 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
22 POP_TOP
23 JUMP_ABSOLUTE 7
>> 26 POP_BLOCK
>> 27 LOAD_CONST 0 (None)
30 RETURN_VALUE
So, if this really bothers you then please tweak it to use a for-loop.
I do not think that it makes a terrible lot of difference for the
use-case at hand though, performance-wise or memory-wise.
As said, if you dislike the coding style then please follow-up.
TIA && cheers,
More information about the Patchwork
mailing list